package com.blumov.fastbox.domain.model.producto;

import com.blumov.fastbox.domain.shared.ValueObject;

public class Promocion implements ValueObject<Promocion> {

	private static final long serialVersionUID = 1L;

	// Needed by Hibernate
	private Integer id;

	private String codigo;
	private String descripcion;
	private String estado;
	
	
	Promocion() {
		// Needed by Hibernate
	}
	
	// Getters & setters
	
	public Integer getId() {
		return id;
	}
	
	public void setId(Integer id) {
		this.id = id;
	}
	
	public String getCodigo() {
		return codigo;
	}
	
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	
	public String getDescripcion() {
		return descripcion;
	}
	
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	
	public String getEstado() {
		return estado;
	}
	
	public void setEstado(String estado) {
		this.estado = estado;
	}
	
	public boolean sameValueAs(Promocion other) {
		return 
				other != null && 
				codigo.equals(other.codigo) &&
				descripcion.equals(other.descripcion) &&
				estado.equals(other.estado);
	}
	
	  @Override
	  public boolean equals(final Object o) {
	    if (this == o) return true;
	    if (o == null || getClass() != o.getClass()) return false;

	    final Promocion promocion = (Promocion) o;

	    return sameValueAs(promocion);
	  }

	  @Override
	  public int hashCode() {
	    return 
	    	codigo.hashCode() +
	    	descripcion.hashCode() +
	    	estado.hashCode();
	  }
}
